	uniform vec3 lightPosition;
	uniform vec3 lightDirection;
	
	uniform mat4 lightViewMatrix;
	uniform mat4 lightProjectionMatrix;
	uniform mat4 cameraViewInverseMatrix;
	
	varying vec3 vertexNormal;
	varying vec3 vertexDirection;
	varying vec3 vertexReflectDir;
	varying vec3 viewDirection;
	varying vec4 q;
	
	void main()
	{
		gl_Position		 = gl_ModelViewProjectionMatrix * gl_Vertex;
		vertexNormal	 = normalize(gl_NormalMatrix * gl_Normal);
		vertexDirection  = normalize(gl_ModelViewMatrix * vec4(lightPosition,1.0)).xyz; 
		viewDirection    = normalize(gl_ModelViewMatrix * gl_Vertex).xyz;
		vertexReflectDir = normalize(reflect(vertexDirection, vertexNormal));
		
		q				 = lightProjectionMatrix * lightViewMatrix  * cameraViewInverseMatrix * gl_ModelViewMatrix * gl_Vertex;
	}	